#ifndef __SEQLIST_H__
#define __SEQLIST_H__

#define ListSize 100

typedef struct
{
	int list[ListSize];
	int lenght;
} SeqList;

/*初始化列表*/
void InitList(SeqList* L)
{
	L->lenght = 0;
}

/*判断是否为空表*/
int ListEmpty(SeqList L)
/*为空返回1，不为空返回0*/
{
	if (L.lenght == 0) {
		return 1;
	} else {
		return 0;
	}

}


/*按照序号查找*/
int GetElem(SeqList L, int i, int* e)
/*查找第i个元素。成功返回该值给e，并返回1表示成功；否则返回-1表示失败*/
{
	if (i < 0 || i > L.lenght - 1) {
		return -1;
	}

	*e = L[i];
	return 1;
}

/*按内容查找*/
int LocateElem(SeqList L, int e)
{
	for (int i = 0; i < L.lenght; i++) {
		if (L[i] == e) {
			return i;
		}
	}
	return 0;
}

/*插入元素*/
int InsertList(SeqList* L, int i, int e)
/*先后移元素，成功返回1，否则返回-1*/
{
	if (i < 0 || i > L->lenght + 1) {
		return -1;
	}
	for (int j = L->lenght - 1; j >= i; j--) {
		L -> list[j + 1] = L-> list[j];
	}
	L->list[i] = e;
	L->lenght += 1;
}

/*删除元素*/
int DeleteList(SeqList* L, int i, int* e)
{
	if (i < 0 || i > L->lenght - 1) {
		return -1;
	}

	*e = L->list[i];
	for (int j = i + 1; j < L->lenght; j++) {
		L->list[j - 1] = L->list[j]
	}
	L -> lenght -= 1;
	return 1;
}

/*计算表长*/
int ListLenght(SeqList L)
{
	return L.lenght;
}

/*清空表*/
int ClearList(SeqList* L)
{
	L -> lenght = 0;
}

#endif // __SEQLIST_H__